﻿//using System;
//using Newtonsoft.Json;
//using Turquoise.Caching.Abstract;

//namespace Turquoise.Caching.Redis
//{
//    public class RedisCacheManager : ICacheManager
//    {

//        private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect("devdiyanet.redis.cache.windows.net,abortConnect=false,ssl=true, syncTimeout=3000, password=/qlgoqmaStaVgXgMHgQIJWpBUx1UUqtHgDKs+MbMtJ8="));

//        private static ConnectionMultiplexer Connection => LazyConnection.Value;

//        private static IDatabase Cache => Connection.GetDatabase();


//        public object Get(string key)
//        {
//            throw new NotImplementedException();
//        }

//        public T Get<T>(string key)
//        {
//            if (!Cache.StringGet(key).HasValue)
//                return default(T);
//            try
//            {
//                return JsonConvert.DeserializeObject<T>(Cache.StringGet(key));
//            }
//            catch (Exception)
//            {
//                return default(T);
//            }
//        }

//        public void Add(string key, object data)
//        {
//            var t = Get<object>(key);
//            if (t != null)
//            {
//                return;
//            }
//            Cache.StringSet(key, JsonConvert.SerializeObject(data),TimeSpan.FromMinutes(ConfigurationManager.AppSettings["CacheTimeOut"].ConvertToInt()));
//        }

//        public void AddForce(string key, object data)
//        {
//            Cache.StringSet(key, JsonConvert.SerializeObject(data), TimeSpan.FromMinutes(ConfigurationManager.AppSettings["CacheTimeOut"].ConvertToInt()));
//        }

       

//        public bool IsAdd(string key)
//        {
//            return Cache.KeyExists(key);
//        }

//        public void Remove(string key)
//        {
//            Cache.KeyDelete(key);
//        }

//        public void RemoveByPattern(string pattern)
//        {
//            var endpoints = Connection.GetEndPoints();

//            foreach (var key in endpoints.Select(endpoint => Connection.GetServer(endpoint)).SelectMany(server => server.Keys(pattern: pattern)))
//            {
//                Cache.KeyDelete(key);
//            }
//        }

//        public void Clear()
//        {
//            var endpoints = Connection.GetEndPoints();
//            foreach (var key in endpoints.Select(endpoint => Connection.GetServer(endpoint)).SelectMany(server => server.Keys()))
//            {
//                Cache.KeyDelete(key);
//            }
//        }
//    }
//}